#include <iostream>

using namespace std;

int add(int a, int b) {
    cout << "add int + int" << endl;
    return a + b;
}

double add(double a, double b) {
    cout << "add double + double" << endl;
    return a + b;
}

double add(int a, double b) {
    cout << "add int + double" << endl;
    return a + b;
}

double add(double a, int b) {
    cout << "add double + int" << endl;
    return a + b;
}

int add(int a, int b, int c) {
    cout << "add int + int + int" << endl;
    return a + b + c;
}

//int add_one(int a) {
//    a = a + 1;
//    return a;
//}

int add_one(int *a) {
    *a = *a + 1;
    return *a;
}

int add_one(int &a) {
    a = a + 1;
    return a;
}

int main() {
    add(1, 2);
    add(1.0, 2);
    add(1, 2.0);
    add(1.0, 2.0);
    add(1, 2, 3);

    int a = 99;
    cout << add_one(a) << endl;
    cout << "a = " << a << endl;

    return 0;
}
